/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.examat.web.controladores;

import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.faces.bean.ManagedProperty;
import javax.inject.Inject;
import javax.inject.Named;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.examat.entidades.Alumno;
import org.examat.entidades.Profesor;
import org.examat.web.beans.ControlUsuariosBean;

import org.examat.web.controladores.util.Sesiones;

/**
 * Bean que maneja la pagina JSF de login.xhtml
 *
 * @author Fernando Aguilar Reyes
 */
@Named
@SessionScoped
public class LoginController
        implements Serializable {

    private Integer claveUnica;
    private String password;
    private String mensaje;
    @PersistenceContext
    private EntityManager em;
    //@ManagedProperty(value="#{controlUsuariosBean}")
    @Inject
    private ControlUsuariosBean control;

    /**
     * Get the value of ClaveUnica
     *
     * @return the value of ClaveUnica
     */
    public Integer getClaveUnica() {
        return claveUnica;
    }

    /**
     * Set the value of ClaveUnica
     *
     * @param ClaveUnica new value of ClaveUnica
     */
    public void setClaveUnica(Integer ClaveUnica) {
        this.claveUnica = ClaveUnica;
    }

    /**
     * Get the value of Mensaje
     *
     * @return the value of Mensaje
     */
    public String getMensaje() {
        return mensaje;
    }

    /**
     * Set the value of Mensaje
     *
     * @param Mensaje new value of Mensaje
     */
    public void setMensaje(String Mensaje) {
        this.mensaje = Mensaje;
    }

    /**
     * Get the value of Password
     *
     * @return the value of Password
     */
    public String getPassword() {
        return password;
    }

    /**
     * Set the value of Password
     *
     * @param Password new value of Password
     */
    public void setPassword(String Password) {
        this.password = Password;
    }

    /**
     * Verifica si las credenciales puestas en las propiedades del bean
     * ClaveUnica y Password coincidan con un usuario de examat
     *
     * @return "inicio" si es un usuario correcto o null si es incorrecto
     */
    public String checkLogin() {
        if (this.claveUnica == null || this.password == null || this.password.equals("") ) {
            this.mensaje = "Escriba todos los datos";
            return null;
        }
        //verificamos si ya está loggeado
        if (this.control.estaLoggeado(this.claveUnica.toString())) {
            this.mensaje = "Ya hay un usuario loggeado con esta clave unica";
            return null;
        }
        //probamos con profesor
        Profesor p = em.find(Profesor.class, this.claveUnica);
        if (p != null && p.getPassword().equals(this.password)) {
            control.login(p);
            return "consola";
        }
        //probamos con alumno
        Alumno al = em.find(Alumno.class, this.claveUnica);
        if (al != null && al.getPassword().equals(this.password)) {
            control.login(al);
            return "lobby";
        }
        this.mensaje = "Usuario o contraseña incorrectos";
        return null;
    }
}
